<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>FTP Server</title>
</head>

<body bgcolor="#FFFFFF">

<h1 align="center"><font size="6" face="Arial" color="#663300"><i>FTP Server</i></font></h1>
<p align="center"><font face="Courier" color="#663300"><a href="http://www.mycgiserver.com/~ranab">Rana Bhattacharyya</a>(<a href="mailto:rana_b@yahoo.com">rana_b@yahoo.com</a>)</font></p>
<p align="left"><font face="Arial">This is a fully featured FTP server written 
  in Java. It is an implementation of <a href="http://www.w3.org/Protocols/rfc959/">RFC 
  959</a>. The design is really modular and the server is fully customizable. 
  Using it you can share files over the Internet. This server is now a part of 
  <a href="http://www.apache.org/">Apache</a> <a href="http://jakarta.apache.org/avalon">Avalon</a> project</font> 
<p align="left"><b><font face="Arial">Notes:</font></b> 
<ul>
  <li><font face="Arial">100% pure Java, open source resumable FTP server!!!</font></li>
  <li><font face="Arial">Multi platform support and multithreaded design.</font></li>
  <li><font face="Arial">User virtual directory, write permission, idle time-out and upload/download bandwidth limitation support.</font></li>
  <li><font face="Arial">You can monitor all the user activities.</font></li>
  <li><font face="Arial">Anonymous login support.</font></li>
  <li><font face="Arial">Handles both ASCII and binary data transfers.</font></li>
  <li><font face="Arial">Both upload and download files are resumable.</font></li>
  <li><font face="Arial">IP restriction support. You can use a limited set of regular expressions (*?[^-]) to specify the allowed/banned IPs.</font></li>
  <li><font face="Arial">The server reloads the user data at a regular interval if necessary.</font></li>
  <li><font face="Arial">Database and LDAP can be used to store user data.</font></li>
  <li><font face="Arial">Default users <i>admin/admin</i> and <i>anonymous</i> will be created by the server when you start it for the first time.</font></li>
  <li><font face="Arial">New user managers can be added very easily by overriding <i>ranab.server.ftp.usermanager.UserManager</i> class.</font></li>
  <li><font face="Arial">For better performance the server can be started without any user interface by executing <i>java ranab.server.ftp.FtpServer &lt;config file&gt;</i>.</font></li>
  <li><font face="Arial">You can encrypt the password in property file based user manager by specifying FtpServer.server.config.prop.encrypt key. The encryption algorithm is MD5.</font></li>
  <li><font face="Arial">Database based user manager will try to create the user table FTP_USER if not found. You can create it manually by executing apps/ftp/conf/ftp-db.sql file. I have tested it using MySQL and Oracle database.</font></li>
  <li><font face="Arial">If you want to use LDAP to store and authenticate user, you need to change the LDAP schema and the config file. The schema file is ftp-db.ldif. I have tested it using Netscape LDAP (version 4.1).</font></li>
  <li><font face="Arial">Supports SITE commands. Use <code>SITE HELP</code> to get the available commands.</font></li>
  <li><font face="Arial">Tested with different FTP clients like 
      <a href="http://www.microsoft.com/windows/ie/">Internet Explorer</a>, 
      <a href="http://www.netscape.com/">Netscape Navigator</a>, 
      <a href="http://www.globalscape.com/">cuteFTP</a>, 
      <a href="http://www.smartftp.com/">SmartFTP</a>, 
      <a href="http://stud.fh-heilbronn.de/%7Ejdebis/leechftp/">LeechFTP</a>,
      <a href="http://http://www.ipswitch.com/">WsFTP</a> etc.</font></li>
  <li><font face="Arial" color="red">If you are using property file based user manager, make sure that the user property file is not accesible by the FTP users.
      Otherwise it will be a security problem. Keep it below the user virtual root directory.</font></li>
</ul>
</body>
</html>
